<html>
<script type="text/javascript">

var last_updated = 0;
var prefs_last_updated = 0;

function param_escape(arg) {
	if (typeof encodeURIComponent != 'undefined')
		return encodeURIComponent(arg);	
	else
		return escape(arg);
}

function update() {
	var d = new Date();
	var login = localStorage["login"];
	var single_user = localStorage["single_user"];

	if (single_user == "1") login = "admin";

	var requestUrl = localStorage["site_url"] + "/backend.php";
	var params = "op=getUnread&fresh=1&login=" + param_escape(login);

	var xhr = new XMLHttpRequest();


	xhr.open("POST", requestUrl, true);
	xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xhr.send(params);

	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4) {

			var icon = new Object();
			var title = new Object();
			var badge = new Object();
			var badge_color = new Object();

			// init stuff
			icon.path = "images/normal.png";
			title.title = "";	
			badge.text = "";
			badge_color.color = [0, 0, 0, 0];

			var show_badge = localStorage["show_badge"] == "1";
			var show_fresh = localStorage["show_fresh"] == "1";
		
			if (xhr.status == 200) {
				var response = xhr.responseText.split(";");

				var unread = parseInt(response[0]);

				if (isNaN(unread)) unread = 0;

				var fresh;
	
				if (response.length == 2)
					fresh = parseInt(response[1]);
				else
					fresh = 0;

				if (isNaN(fresh)) fresh = 0;

				if (unread > 0) {
					icon.path = "images/alert.png";
					title.title = "You have %s unread articles.".replace("%s", unread);

					if (show_fresh && fresh > 0) {
						badge.text = fresh + "";
						badge_color.color = [0, 200, 0, 255];
					} else {
						badge.text = unread + "";
						badge_color.color = [255, 0, 0, 255];
					}

				} else if (unread == -1) {
					icon.path = "images/error.png";		

					var errorMsg = xhr.responseText.split(";")[1];

					title.title = "Error: %s.".replace("%s", errorMsg.trim());

				} else {
					title.title = "You have no unread articles.";
				}

				localStorage["last_updated"] = d.getTime();
				localStorage["last_error"] = "";
			} else {
				localStorage["last_error"] = xhr.responseText;

				icon.path = "images/error.png";
				title.title = "Error (%s) while updating.".replace("%s", xhr.status);
			}

			if (!show_badge) badge.text = "";	

			chrome.browserAction.setBadgeBackgroundColor(badge_color);
			chrome.browserAction.setBadgeText(badge);
			chrome.browserAction.setTitle(title);
			chrome.browserAction.setIcon(icon);

		}
	};

}

function timeout() {

	var update_interval;
	var prefs_updated;

	if (localStorage["update_interval"])
		update_interval = localStorage["update_interval"] * 60 * 1000;
	else
		update_interval = 15 * 60 * 1000;

	if (localStorage["prefs_updated"])
		prefs_updated = localStorage["prefs_updated"];
	else
		prefs_updated = -1;

	var d = new Date();

	if (d.getTime() > last_updated + update_interval || 
			prefs_updated != prefs_last_updated) {

		last_updated = d.getTime();
		prefs_last_updated = prefs_updated;
		try {
			update();
		} catch (e) {
			//
		}
	}

	window.setTimeout("timeout()", 1000);
}

function init() {

	chrome.browserAction.onClicked.addListener(function() { 
		var site_url = localStorage['site_url'];

		if (site_url) {
			var cp = new Object();

			cp.url = site_url;

			chrome.tabs.create(cp);
		}

	});
		
	window.setTimeout("timeout()", 1000);

}
</script>

<body onload="init()"> </body>

</html>
